import java.util.Arrays;
import java.util.Random;

/**
 * @author liuchangling
 * @date 2021/3/22 4:13 PM
 * @descripion 定义长度为[16][16]的二维数组，并分别打印每一行、每一列元素的和，两条对角线元素的和
 */
public class Array {
    private static int[][] arr = new int[16][16];
    /**
     * 每一行元素的和
     */
    private int[] arrLineSum = new int[16];
    /**
     * 每一列元素的和
     */
    private int[] arrColumnSum = new int[16];
    /**
     * diagonalSum1为对角线从左上到右下的和，diagonalSum2为从右上到左下的和
     */
    private int diagonalSum1, diagonalSum2;

    /**
     * 构造方法，生成数组元素，且打印便于查看
     */
    Array() {
        setNum();
        System.out.println("生成的数组元素为：");
        printArr();
    }


    /**
     * 设置随机数1-100
     */
    public void setNum() {
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                Random random = new Random();
                arr[i][j] = random.nextInt(100) + 1;
            }
        }

    }

    /**
     * 打印整个二维数组，辅助用
     */
    public void printArr() {
        for (int i = 0; i < arr.length; i++) {
            System.out.println(Arrays.toString(arr[i]));
        }
    }

    /**
     * 获得每一行元素的和，并打印
     */
    public void getLineSum() {
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                arrLineSum[i] += arr[i][j];
            }
            System.out.println("第" + (i + 1) + "行的元素的和为" + arrLineSum[i]);
        }
    }

    /**
     * 获得每一列的元素的和，并打印
     */
    public void getColumnSum() {
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                arrColumnSum[i] += arr[j][i];
            }
            System.out.println("第" + (i + 1) + "列的元素的和为" + arrColumnSum[i]);
        }
    }

    /**
     * 获得左上角到右下角对角线的元素，并打印它们的和
     */
    public void getDiagonalSum1() {
        for (int i = 0; i < arr.length; i++) {
            diagonalSum1 += arr[i][i];
            System.out.println("第" + (i + 1) + "行" + (i + 1) + "列的元素为" + arr[i][i]);
        }
        System.out.println("从左上角到右下角所有元素的和为：" + diagonalSum1);
    }

    /**
     * 获得右上角到左下角对角线的的元素，并打印它们的和
     */
    public void getDiagonalSum2() {
        for (int i = 0; i <= arr.length - 1; i++) {
            diagonalSum2 += arr[i][arr.length - 1 - i];
            System.out.println("第" + (i + 1) + "行" + (arr.length - i) + "列的元素为" + arr[i][arr.length - 1 - i]);
        }
        System.out.println("从右上角到左下角所有元素的和为：" + diagonalSum2);
    }
}
